package me.kuye.jkuye.helper;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import me.kuye.jkuye.core.Const;
import me.kuye.jkuye.util.PropUtil;

public class PropHelper {
	private static PropUtil propUtils;
	private static Map<String, PropUtil> propUtilsMap = new HashMap<String, PropUtil>();

	public static PropUtil getUtils(String fileName) {
		return getUtils(fileName, Const.DEFAULT_ENCODING);
	}

	public static PropUtil getUtils(String fileName, String encoding) {
		PropUtil proUtils = propUtilsMap.get(fileName);
		if (proUtils == null) {
			synchronized (propUtilsMap) {
				proUtils = propUtilsMap.get(fileName);
				if (proUtils == null) {
					proUtils = new PropUtil(fileName, encoding);
					propUtilsMap.put(fileName, proUtils);
					if (getPropUtils() == null) {
						setPropUtils(proUtils);
					}
				}
			}
		}
		return proUtils;
	}

	public static PropUtil getPropUtils() {
		return propUtils;
	}

	public static void setPropUtils(PropUtil propUtils) {
		PropHelper.propUtils = propUtils;
	}

	public static PropUtil getUtils(File file) {
		return getUtils(file, Const.DEFAULT_ENCODING);
	}

	public static PropUtil getUtils(File file, String encoding) {
		PropUtil propUtils = propUtilsMap.get(file.getName());

		if (propUtils == null) {
			synchronized (propUtilsMap) {
				propUtils = propUtilsMap.get(file.getName());
				if (propUtils == null) {
					propUtils = new PropUtil(file, encoding);
					propUtilsMap.put(file.getName(), propUtils);
					if (getPropUtils() == null) {
						setPropUtils(propUtils);
					}
				}
			}
		}
		return propUtils;
	}

}
